﻿Public Class businessCatalogo
    Public Function ValidaStock(ByVal Articulo As clsCatalogo, ByVal Cantidad As Int32) As Boolean
        If Articulo.Cantidad >= Cantidad Then
            Return True
        Else
            Return False
        End If
    End Function

    Public Function ActualizaStock(ByVal Articulo As clsCatalogo, ByVal Cantidad As Int32) As Boolean
        Dim ProductoDao As New daoCatalogo()
        Try
            Articulo.Cantidad = Articulo.Cantidad + Cantidad
            If ProductoDao.Modificar(Articulo) Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
        Finally
            ProductoDao.Dispose()
        End Try
    End Function

    Public Function TraeArticulosAdjudicados() As List(Of clsCatalogo)
        Dim Cn As New SqlClient.SqlConnection
        Dim Cm As New SqlClient.SqlCommand
        Dim Dr As SqlClient.SqlDataReader
        Dim ListaArticulos As New List(Of clsCatalogo)

        Dim Conf As New clsConfiguraciones()
        Dim dao_Conf As New daoConfiguraciones()
        Conf = dao_Conf.TraeConfiguraciones()

        Try
            Cn.ConnectionString = My.Resources.Conexion
            Cn.Open()
            Cm.CommandType = CommandType.StoredProcedure
            Cm.CommandText = "SP_TRAER_ARTICULOS_SORTEOS"


            Cm.Parameters.Add("@fecha_hasta", SqlDbType.SmallDateTime)
            Cm.Parameters("@fecha_hasta").Value = Now.Date.AddMonths(-3)

            Cm.Parameters.Add("@Cod_Suc", SqlDbType.Int)
            Cm.Parameters("@Cod_Suc").Value = Conf.Cod_Suc

            Cm.Connection = Cn
            Dr = Cm.ExecuteReader
            If Dr.HasRows = True Then
                While Dr.Read
                    Dim Producto As New clsCatalogo()
                    Producto.Prod_Id = Dr.GetInt32(0)
                    If Dr.IsDBNull(1) Then
                        Producto.Marca = "-"
                    Else
                        Producto.Marca = Dr.GetString(1).Trim.ToUpper
                    End If
                    If Dr.IsDBNull(2) Then
                        Producto.Modelo = "-"
                    Else
                        Producto.Modelo = Dr.GetString(2).Trim.ToUpper
                    End If

                    Producto.Cantidad = Dr.GetInt32(3)

                    If Dr.IsDBNull(4) Then
                        Producto.Proveedor = "-"
                    Else
                        Producto.Proveedor = Dr.GetString(4).Trim.ToUpper
                    End If

                    If Dr.IsDBNull(5) Then
                        Producto.Costo = 0
                    Else
                        Producto.Costo = Dr.GetDecimal(5)
                    End If

                    If Dr.IsDBNull(6) Then
                        Producto.Descripcion = "-"
                    Else
                        Producto.Descripcion = Dr.GetString(6).Trim.ToUpper
                    End If

                    Producto.Tipo = Dr.GetString(7).Trim.ToUpper
                    Producto.Fecha_Ingreso = Dr.GetDateTime(8)
                    Producto.Cod_Suc = Dr.GetInt32(9)

                    ListaArticulos.Add(Producto)
                    Producto.Dispose()
                End While

                Dr.Close()
                Cn.Close()
            End If
            Return ListaArticulos
        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            Conf.Dispose()
            Cn.Dispose()
            Cm.Dispose()
        End Try
    End Function

    Public Function ConsultaCatalogo(ByVal Prod_Id As Int32, ByVal Costo As Decimal, ByVal Marca As String, ByVal Modelo As String, ByVal Nombre As String, ByVal Proveedor As String, ByVal Tipo As String, ByVal Cod_Suc As Int32) As List(Of clsCatalogo)
        Dim ListaCatalogo As New List(Of clsCatalogo)
        Dim ProductoDao As New daoCatalogo()

        Try
            ''Si todo està bacio busco todos los articulos
            If Prod_Id = 0 And Costo = 0 And Marca.Length = 0 And Modelo.Length = 0 And Nombre.Length = 0 And Proveedor.Length = 0 And Tipo.Length = 0 Then
                ListaCatalogo = ProductoDao.TraeArticulosPorSucursal(Cod_Suc)
                Return ListaCatalogo
            End If

            ''Primero busco por codigo de Producto
            Dim Producto As New clsCatalogo()
            If Prod_Id > 0 Then
                Producto = ProductoDao.TraeArticulo(Prod_Id)
            End If
            If Producto.Prod_Id > 0 Then
                ListaCatalogo.Add(Producto)
                Producto.Dispose()
                Return ListaCatalogo
            End If
            Producto.Dispose()

            ''Armo la consulta en un string segun los parametros Cargados
            Dim Cn As New SqlClient.SqlConnection
            Dim Cm As New SqlClient.SqlCommand
            Dim Dr As SqlClient.SqlDataReader
            Dim StringSelect As String
            Dim StrinWhere As String

            Try
                Cn.ConnectionString = My.Resources.Conexion
                Cn.Open()
                Cm.CommandType = CommandType.Text


                StrinWhere = "where Cod_Suc = " & Cod_Suc.ToString.Trim

                If Costo > 0 Then
                    StrinWhere = StrinWhere & " AND Costo = " & Costo.ToString.Trim
                End If

                If Marca.Trim.Length > 0 Then
                    StrinWhere = StrinWhere & " AND Marca LIKE '%" & Marca.ToString.Trim & "%' "
                End If

                If Modelo.Trim.Length > 0 Then
                    StrinWhere = StrinWhere & " AND Modelo LIKE '%" & Modelo.ToString.Trim & "%' "
                End If

                If Nombre.Trim.Length > 0 Then
                    StrinWhere = StrinWhere & " AND Descripcion LIKE '%" & Nombre.ToString.Trim & "%' "
                End If

                If Proveedor.Trim.Length > 0 Then
                    StrinWhere = StrinWhere & " AND Proveedor LIKE '%" & Proveedor.ToString.Trim & "%' "
                End If

                If Tipo.Trim.Length > 0 Then
                    StrinWhere = StrinWhere & " AND Tipo LIKE '%" & Tipo.ToString.Trim & "%' "
                End If

                StringSelect = "Select prod_id, marca, modelo, cantidad, proveedor, costo, " & _
                               "descripcion, Tipo, fecha_ingreso, Cod_Suc " & _
                               "from  Catalogo " & StrinWhere

                Cm.CommandText = StringSelect

                Cm.Connection = Cn
                Dr = Cm.ExecuteReader
                If Dr.HasRows = True Then
                    While Dr.Read
                        Dim Producto2 As New clsCatalogo()
                        Producto2.Prod_Id = Dr.GetInt32(0)
                        If Dr.IsDBNull(1) Then
                            Producto2.Marca = "-"
                        Else
                            Producto2.Marca = Dr.GetString(1).Trim.ToUpper
                        End If
                        If Dr.IsDBNull(2) Then
                            Producto2.Modelo = "-"
                        Else
                            Producto2.Modelo = Dr.GetString(2).Trim.ToUpper
                        End If

                        Producto2.Cantidad = Dr.GetInt32(3)

                        If Dr.IsDBNull(4) Then
                            Producto2.Proveedor = "-"
                        Else
                            Producto2.Proveedor = Dr.GetString(4).Trim.ToUpper
                        End If

                        If Dr.IsDBNull(5) Then
                            Producto2.Costo = 0
                        Else
                            Producto2.Costo = Dr.GetDecimal(5)
                        End If

                        If Dr.IsDBNull(6) Then
                            Producto2.Descripcion = "-"
                        Else
                            Producto2.Descripcion = Dr.GetString(6).Trim.ToUpper
                        End If

                        Producto2.Tipo = Dr.GetString(7).Trim.ToUpper
                        Producto2.Fecha_Ingreso = Dr.GetDateTime(8)
                        Producto2.Cod_Suc = Dr.GetInt32(9)

                        ListaCatalogo.Add(Producto2)
                        Producto2.Dispose()
                    End While

                    Dr.Close()
                    Cn.Close()
                End If
                Return ListaCatalogo
            Catch ex As Exception
                Throw New Exception(ex.Message)
            Finally
                Cn.Dispose()
                Cm.Dispose()
            End Try
        Catch ex As Exception
        Finally
            ProductoDao.Dispose()
        End Try
        Return ListaCatalogo
    End Function

    Public Sub New()
        MyBase.New()
    End Sub
    Public Sub Dispose()
        MyBase.Finalize()
    End Sub
End Class
